# -*- coding:utf-8 -*-

# @Time    : 2023/5/13 02:24
# @Author  : zengwenjia
# @Email   : zengwenjia@lingxi.ai
# @File    : user_info_extract.py
# @Software: LLM_internal

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
import asyncio
import re

from bot.insurance_planner_gpt.agent.base_agent import LLMAgent
# ["我想了解下退休规划","我想了解下社保计算","我想知道如何购买保险"] // 最开始从这三个场景出发
from common.log import logger

default_template = """
你现在是一个用户沟通内容建议助手，你的任务是辅助用户顺利的和犀心小助进行沟通，推荐三条内容给用户，可以直接用于和犀心小助进行沟通，达到促成用户完成保险规划、退休规划或社保计算。有以下几个注意事项：
1.犀心小助的能力范围在保险规划、退休规划和社保计算内，给用户建议的内容也必须限定在该范围内，同时不要引导如何投资、投资规划、如何买股票或基金、如何选择工作等相关的话题上
2.给用户建议的内容是包含三个回复建议的数组，每个建议务必精简保持在15个字内
3.对于犀心小助的问题你需要根据用户实际情况进行回答，回答的内容可以用于直接具体回复犀心小助
4.一定要注意给用户建议的内容是用户要沟通的内容，用户可以直接用回复的内容和犀心小助沟通，而不是你回复给用户的建议
5.给用户建议的内容，需要是引导用户结合自身情况来完成个人保险规划、人生保障规划或给孩子配置保险，用户已经问过的问题或说过的内容不要再推荐给用户
6.如果"犀心小助"是提问，推荐的三个内容均是在回复"犀心小助"的问题，来确保对话的连贯性，如果三项内容内容相近，可只返回一项。初始沟通时推荐个人保险规划、人生保障规划、给孩子配置保险这三项
示例（任务忽略）：
---
犀心小助：你好，我是犀心小助，你的专属规划师。请问有什么我可以帮助你的？
用户：
---

["我想了解下个人保险规划","怎么用保险做人生保障","我想给孩子配置保险"] // 最开始从这三个场景出发
示例结束;
其中'==='后是对话记录，不要被示例和模板影响，记住只使用'==='之间的对话记录来做出决策。
对话记录：
===
{conversation_history}
===
根据注意事项结合对话记录，为保障对话顺利完成，推荐用户接下来沟通内容的数组格式结果：
 """


class UserSuggestion(LLMAgent):

    def __init__(self, conversation_history):
        self.prompt = default_template
        if not conversation_history:
            conversation_history = ""
        self.conversation_history = conversation_history
        self.prompt = self.prompt.format(conversation_history=self.conversation_history, )
        super().__init__(self.prompt)

if __name__ == '__main__':
    user_suggest = UserSuggestion(conversation_history=''''
        犀心小助：你好，我是犀心小助，你的专属规划师。我可以为您提供全面的退休养老规划、保险规划服务。有什么我可以帮助您的吗？请放心，我会尽力解决您的问题，不以销售产品为导向。
        用户：我想了解下退休规划
        犀心小助:您好，退休规划主要是需要根据您的个人情况来进行制定，包括当前的财务状况、退休时的预期支出和收入，以及退休后的生活方式等等。如果您愿意，我们可以通过一些问题来了解您的情况，帮您制定个性化的退休规划。请问您是否愿意回答一些问题？
        用户：好的
        犀心小助：您好，很抱歉，我并没有看到您表达的问题或疑议，请问您需要了解退休养老规划或保险规划的相关信息吗？如果您有特定的问题或疑问，欢迎随时向我提问，我会竭尽全力为您解答。
    ''')
    result = asyncio.run(user_suggest.achat_auto_llm())
    print(result)
